Update headtracker_msp.c
[inav.git] / docs / Inflight Adjustments.md
blob37102cebf0e8725d9964f2f63d45ec8a81a72caf
1 # In-flight Adjustments
3 With INAV it's possible to make adjustments to various settings by using AUX channels from your transmitter while the aircraft is flying.
5 ## Warning
7 Changing settings during flight can make your aircraft unstable and crash if you are not careful.
9 ## Recommendations
11 * Always make adjustments while flying in a large open area.
12 * Make small adjustments and fly carefully to test your adjustment.
13 * Give yourself enough flying space and time to adjust to how your changes affect the behaviour of the aircraft.
14 * Remember to set adjustment channel switches/pots to the center position before powering on your TX and your aircraft.
15 * If possible configure switch warnings on your transitter for dedicated adjustment switches.
16 * A momentary 3 position switch is the best choice of switch for this - i.e. one that re-centers itself when you let go of it.
18 ## Overview
20 Up to 4 RX channels can be used to make different adjustments at the same time.
22 The adjustment a channel makes can be controlled by another channel.
24 The following adjustments can be made in flight as well as on the ground.
26 * RC Rate
27 * RC Expo
28 * Throttle Expo
29 * Pitch, Roll, Yaw Rates
30 * Pitch, Roll, Yaw PIDs
31 * Manual rates
32 * FW cruise_throttle, pitch2thr, min_throttle_down_pitch_angle 
33 * Board alignment
34 * Level PIDs
35 * PosHold, AltHold PIDs
36 * PIDs profile
38 Example scenarios:
39 Up to 4 3-position switches or pots can be used to adjust 4 different settings at the same time.
40 A single 2/3/4/5/6/x position switch can be used to make one 3 position switch adjust one setting at a time.
42 Any combination of switches and pots can be used. So you could have 6 POS switch.
44 Settings are not saved automatically, connect a GUI, refresh and save or save using stick position when disarmed.
45 Powering off without saving will discard the adjustments.
47 Settings can be saved when disarmed using stick positions: Throttle Low, Yaw Left, Pitch Low, Roll Right.
49 ## Adjustment switches
51 The switch can be a ON-OFF-ON, POT or momentary ON-OFF-ON switch.  The latter is recommended.
53 When the switch is returned to the center position the value will not be increased/decreased.
55 Each time you can press the switch high/low and then return it to the middle the value will change at least once, you do not have to wait before pressing the switch again if you want to increase/decrease at a faster rate.  While the adjustment switch held is high/low, the adjustment function applies and increases/decreases the value being adjusted twice a second and the flight controller will beep shorter/longer, respectively. The system works similar to how a keyboard repeat delay works.
57 Hint: With OpenTX transmitters you can combine two momentary OFF-ON switches to control a single channel.  You could make it so that a momentary switch on the left of your transmitter decreases the value and a momentary switch on the right increases the value.  Experiment with your mixer!
60 ## Configuration
62 The CLI command `adjrange` is used to configure adjustment ranges.
64 20 adjustment ranges can be defined.
65 4 adjustments can be made at the same time, each simultaneous adjustment requires an adjustment slot.
67 Show the current ranges using:
69 `adjrange`
71 Configure a range using:
73 `adjrange <index> <slot> <range channel> <range start> <range end> <adjustment function> <adjustment channel>`
77 | Argument | Value | Meaning |
78 | -------- | ----- |-------- |
79 | Index | 0 - 19 | Select the adjustment range to configure |
80 | Slot | 0 - 3 | Select the adjustment slot to use |
81 | Range Channel | 0 based index, AUX1 = 0, AUX2 = 1 | The AUX channel to use to select an adjustment for a switch/pot |
82 | Range Start | 900 - 2100. Steps of 25, e.g. 900, 925, 950... | Start of range |
83 | Range End | 900 - 2100 | End of range |
84 | Adjustment function | 0 - 56 | See Adjustment function table |
85 | Adjustment channel | 0 based index, AUX1 = 0, AUX2 = 1 | The channel that is controlled by a 3 Position switch/Pot |
87 Range Start/End values should match the values sent by your receiver.
89 Normally Range Channel and Slot values are grouped together over multiple adjustment ranges.
91 The Range Channel and the Adjustment Channel can be the same channel.  This is useful when you want a single 3 Position switch to be dedicated
92 to a single adjustment function regardless of other switch positions.
94 The adjustment function is applied to the adjustment channel when range channel is between the range values.
95 The adjustment is made when the adjustment channel is in the high or low position.  high = mid_rc + 200, low = mid_rc - 200.  by default this is 1700 and 1300 respectively.
97 When the Range Channel does not fall into Start/End range the assigned slot will retain it's state and will continue to apply the adjustment. For
98 this reason ensure that you define enough ranges to cover the range channel's usable range.
100 ### Adjustment function
102 | Value | Adjustment |
103 | ----- | ---------- |
104 | 0     | None |
105 | 1     | RC RATE |
106 | 2     | RC_EXPO |
107 | 3     | THROTTLE_EXPO |
108 | 4     | PITCH_ROLL_RATE |
109 | 5     | YAW_RATE |
110 | 6     | PITCH_ROLL_P |
111 | 7     | PITCH_ROLL_I |
112 | 8     | PITCH_ROLL_D |
113 | 9     | PITCH_ROLL_FF |
114 | 10    | PITCH_P |
115 | 11    | PITCH_I |
116 | 12    | PITCH_D |
117 | 13    | PITCH_FF |
118 | 14    | ROLL_P |
119 | 15    | ROLL_I |
120 | 16    | ROLL_D |
121 | 17    | ROL_FF |
122 | 18    | YAW_P |
123 | 19    | YAW_I |
124 | 20    | YAW_D |
125 | 21    | YAW_FF
126 | 22    | Unused |
127 | 23    | PITCH_RATE |
128 | 24    | ROLL_RATE |
129 | 25    | RC_YAW_EXPO |
130 | 26    | MANUAL_RC_EXPO |
131 | 27    | MANUAL_RC_YAW_EXPO |
132 | 28    | MANUAL_PITCH_ROLL_RATE |
133 | 29    | MANUAL_ROLL_RATE |
134 | 30    | MANUAL_PITCH_RATE |
135 | 31    | MANUAL_YAW_RATE |
136 | 32    | NAV_FW_CRUISE_THROTTLE |
137 | 33    | NAV_FW_PITCH2THR |
138 | 34    | ROLL_BOARD_ALIGNMENT |
139 | 35    | PITCH_BOARD_ALIGNMENT |
140 | 36    | LEVEL_P |
141 | 37    | LEVEL_I |
142 | 38    | LEVEL_D |
143 | 39    | POS_XY_P |
144 | 40    | POS_XY_I |
145 | 41    | POS_XY_D |
146 | 42    | POS_Z_P |
147 | 43    | POS_Z_I |
148 | 44    | POS_Z_D |
149 | 45    | HEADING_P |
150 | 46    | VEL_XY_P |
151 | 47    | VEL_XY_I |
152 | 48    | VEL_XY_D |
153 | 49    | VEL_Z_P |
154 | 50    | VEL_Z_I |
155 | 51    | VEL_Z_D |
156 | 52    | FW_MIN_THROTTLE_DOWN_PITCH_ANGLE |
157 | 53    | ADJUSTMENT_VTX_POWER_LEVEL |
158 | 54    | TPA |
159 | 55    | TPA_BREAKPOINT |
160 | 56    | NAV_FW_CONTROL_SMOOTHNESS |
161 | 57    | FW_TPA_TIME_CONSTANT |
162 | 58    | FW_LEVEL_TRIM |
164 ## Examples
166 ### Example 1 - 3 Position switch used to adjust pitch/roll rate
169 adjrange 0 0 3 900 2100 4 3
172 explained:
174 * configure adjrange 0 to use adjustment slot 1 (0) so that when aux4
175 (3) in the range 900-2100 then use adjustment 4 (pitch/roll rate) when aux 4 (3)
176 is in the appropriate position.
179 ### Example 2 - 2 Position switch used to enable adjustment of RC rate via a 3 position switch
182 adjrange 1 1 0 900 1700 0 2
183 adjrange 2 1 0 1700 2100 1 2
185 explained:
187 * configure adjrange 1 to use adjustment slot 2 (1) so that when aux1
188 (0) in the range 900-1700 then do nothing (0) when aux 3 (2) is in any
189 position.
190 * configure adjrange 2 to use adjustment slot 2 (1) so that when aux1
191 (0) in the range 1700-2100 then use adjustment rc rate (1) when aux 3
192 (2) is in the appropriate position.
194 Without the entire range of aux1 being defined there is nothing that
195 would stop aux 3 adjusting the pitch/roll rate once aux 1 wasn't in the higher
196 range.
198 ### Example 3 - 6 Position switch used to select PID tuning adjustments via a 3 position switch
201 adjrange 3 2 1 900 1150 6 3
202 adjrange 4 2 1 1150 1300 7 3
203 adjrange 5 2 1 1300 1500 8 3
204 adjrange 6 2 1 1500 1700 18 3
205 adjrange 7 2 1 1700 1850 19 3
206 adjrange 8 2 1 1850 2100 20 3
209 explained:
211 * configure adjrange 3 to use adjustment slot 3 (2) so that when aux2
212 (1) in the range 900-1150 then use adjustment Pitch/Roll P (6) when aux 4
213 (3) is in the appropriate position.
214 * configure adjrange 4 to use adjustment slot 3 (2) so that when aux2
215 (1) in the range 1150-1300 then use adjustment Pitch/Roll I (7) when aux 4
216 (3) is in the appropriate position.
217 * configure adjrange 5 to use adjustment slot 3 (2) so that when aux2
218 (1) in the range 1300-1500 then use adjustment Pitch/Roll D (8) when aux 4
219 (3) is in the appropriate position.
220 * configure adjrange 6 to use adjustment slot 3 (2) so that when aux2
221 (1) in the range 1500-1700 then use adjustment Yaw P (18) when aux 4
222 (3) is in the appropriate position.
223 * configure adjrange 7 to use adjustment slot 3 (2) so that when aux2
224 (1) in the range 1700-1850 then use adjustment Yaw I (19) when aux 4
225 (3) is in the appropriate position.
226 * configure adjrange 8 to use adjustment slot 3 (2) so that when aux2
227 (1) in the range 1850-2100 then use adjustment Yaw D (20) when aux 4
228 (3) is in the appropriate position.
230 ### Configurator examples
232 The following 5 images show valid configurations.  In all cases the entire usable range for the Range Channel is used.
234 ![Configurator example 2](Screenshots/adjustments-pitch-and-roll-rate-adjustment-via-3pos.png)
238 ![Configurator example 3](Screenshots/adjustments-pid-via-two-3pos.png)
242 ![Configurator example 4](Screenshots/adjustments-pid-via-6pos-and-3pos.png)
246 ![Configurator example 5](Screenshots/adjustments-rates-via-a-2pos-and-3pos.png)
248 The following examples shows __incorrect__ configurations - the entire usable range for the Range Channel is not used in both cases.
250 ![Configurator example 6](Screenshots/adjustments-incorrect-config-1.png)
251 ![Configurator example 7](Screenshots/adjustments-incorrect-config-2.png)
253 In the following example, the incorrect configuraton (above) has been corrected by adding a range that makes 'No changes'.
255 ![Configurator example 7](Screenshots/adjustments-incorrect-config-2-corrected.png)